﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;

using BUS;
using DTO;

namespace Control
{
    public partial class ctrlLapPhieuThuTienPhat : DevExpress.XtraEditors.XtraUserControl
    {
        public ctrlLapPhieuThuTienPhat()
        {
            InitializeComponent();

            //setting date ngày thu
            this.dateNgayThu.Properties.DisplayFormat.FormatString = "dd/MM/yyyy";
            this.dateNgayThu.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
            this.dateNgayThu.Properties.EditFormat.FormatString = "dd/MM/yyyy";
            this.dateNgayThu.Properties.EditFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
            this.dateNgayThu.Properties.Mask.EditMask = "dd/MM/yyyy";

            //chỉ cho nhập số trên textbox thu tiền
            this.txtTienThu.Properties.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.Numeric;
        }

        private void ctrlLapPhieuThuTienPhat_Load(object sender, EventArgs e)
        {
            //load ds độc giả
            lookUpMaTheDocGia.Properties.DataSource = DocGiaBUS.DocDanhSach();
            lookUpMaTheDocGia.Properties.DisplayMember = "MaDocGia";
            lookUpMaTheDocGia.Properties.ValueMember = "MaDocGia";

            //ngày thu là ngày hiện hành
            dateNgayThu.DateTime = DateTime.Today;

            //hiển thị nhân viên
            txtTenNhanVien.Text = session.tenNhanVien;
        }

        private void lookUpMaThe_EditValueChanged(object sender, EventArgs e)
        {
            try
            {
                //Lấy thông tin từ lookup
                DocGiaDTO dto = (DocGiaDTO)lookUpMaTheDocGia.GetSelectedDataRow();

                //gán vào text họ tên độc giả
                txtHoTenDocGia.Text = dto.TenDocGia;

                //tiền độc giả đang nợ
                txtTienDangNo.Text = dto.TienNo.ToString();

                //set lại tiền thu
                txtTienThu.Text = "0";

                //set tiền còn lại
                txtConLai.Text = (float.Parse(txtTienDangNo.Text) - float.Parse(txtTienThu.Text)).ToString();                
            }
            catch
            {
            }
        }

        private void LamMoi()
        {
            //ngày thu
            dateNgayThu.DateTime = DateTime.Today;

            //refresh lookup
            lookUpMaThe_EditValueChanged(null, null);
        }

        private void txtTienThu_EditValueChanged(object sender, EventArgs e)
        {
            //set tiền còn lại
            txtConLai.Text = (float.Parse(txtTienDangNo.Text) - float.Parse(txtTienThu.Text)).ToString();
        }

        private void btnLapPhieu_Click(object sender, EventArgs e)
        {
            if (KiemTra() == false)
                return;

            try
            {
                //Lấy thông tin từ lookup
                DocGiaDTO dtoDocGia = (DocGiaDTO)lookUpMaTheDocGia.GetSelectedDataRow();

                //cập nhật lại tiền nợ mới của độc giả
                dtoDocGia.TienNo = float.Parse(txtConLai.Text);
                //đưa xuống csdl
                DocGiaBUS.CapNhatTienNo(dtoDocGia);

                //tạo mới phiếu thu tiền phạt
                PhieuThuTienPhatDTO dtoPhieuThu = new PhieuThuTienPhatDTO
                {
                    MaDocGia = dtoDocGia.MaDocGia,
                    MaNhanVien = session.maNhanVien,
                    MaPhieuThu = 0,
                    NgayThu = dateNgayThu.DateTime,
                    TienNo = float.Parse(txtTienDangNo.Text),
                    SoTienThu = float.Parse(txtTienThu.Text),
                    ConLai = dtoDocGia.TienNo
                };

                //đưa xuống csdl
                PhieuThuTienPhatBUS.Them(dtoPhieuThu);

                //refresh
                LamMoi();

                //thành công
                MessageBox.Show("Thêm thành công!!!");
            }
            catch (Exception ex)
            {
                //báo lỗi
                MessageBox.Show(ex.Message, "Lỗi!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private bool KiemTra()
        {
            //MessageBox.Show("", "Lỗi!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //return false;
            if (lookUpMaTheDocGia.ItemIndex == -1)
            {
                MessageBox.Show("Chưa chọn thẻ độc giả", "Lỗi!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }

            if (float.Parse(txtTienThu.Text) == 0)
            {
                MessageBox.Show("Số tiền thu không để trống", "Lỗi!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtTienThu.Focus();
                return false;
            }

            if (float.Parse(txtTienDangNo.Text) < float.Parse(txtTienThu.Text))
            {
                MessageBox.Show("Số tiền thu không được vượt quá tiền đang nợ", "Lỗi!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtTienThu.Focus();
                return false;
            }

            return true;
        }
    }
}
